Skip to content

Method: KalenderEintragGenerell(LocalDateTime, ComparableQuantity, KalenderEintragTyp)

1: package zeit.eintraege;
2:
3: import tec.uom.se.ComparableQuantity;
4:
5: import javax.measure.quantity.Time;
6: import java.time.LocalDate;
7: import java.time.LocalDateTime;
8: import java.util.Objects;
9:
10: /**
11: * Diese Klasse repräsentiert alle Kalendereinträge, außer diese, welche Belegungen von Mitarbeitern oder Maschinen darstellen.
12: * Deswegen darf der {@link KalenderEintragTyp KalenderEintragTyp} nicht Belegt sein.
13: */
14: public final class KalenderEintragGenerell extends KalenderEintrag {
15:
16: private KalenderEintragGenerell(final LocalDateTime von, final ComparableQuantity<Time> dauer, final KalenderEintragTyp typ) {
17: super(von, dauer, typ);
18: }
19:
20: private KalenderEintragGenerell(final LocalDateTime von, final LocalDateTime bis, final KalenderEintragTyp typ) {
21: super(von, bis, typ);
22: }
23:
24: @Override
25: public <T> T accept(final KalenderEintragVisitor<T> visitor) {
26: return visitor.handle(this);
27: }
28:
29:
30: /**
31: * Create Methode.
32: * @param von von Datum des Kalendereintrags
33: * @param dauer Dauer des Kalendereintrags
34: * @param typ Typ des Kalendereintrags z.B. Belegt
35: * @return den erstellten Kalendereintrag.
36: */
37: public static KalenderEintragGenerell create(final LocalDateTime von, final ComparableQuantity<Time> dauer, final KalenderEintragTyp typ) {
38: Objects.requireNonNull(von);
39: Objects.requireNonNull(dauer);
40: Objects.requireNonNull(typ);
41:
42: return new KalenderEintragGenerell(von, dauer, typ);
43: }
44:
45: /**
46: * Create Methode.
47: * @param von von Datum des Kalendereintrags
48: * @param bis bis Datum des Kalendereintrags
49: * @param typ Typ des Kalendereintrags z.B. Belegt
50: * @return den erstellten Kalendereintrag.
51: */
52: public static KalenderEintragGenerell create(final LocalDateTime von, final LocalDateTime bis, final KalenderEintragTyp typ) {
53: Objects.requireNonNull(von);
54: Objects.requireNonNull(bis);
55: Objects.requireNonNull(typ);
56:
57: if (!von.isBefore(bis)) {
58:         throw new IllegalArgumentException("Von-Zeitpunkt muss vor dem Bis-Zeitpunkt liegen!");
59: }
60:
61: return new KalenderEintragGenerell(von, bis, typ);
62: }
63:
64: /**
65: * @param day Tag welcher vom Eintrag umfasst werden soll.
66: * @param typ Typ des Kalendereintrags z.B. Belegt
67: * @return einen Kalendereintrag, welcher den ganzen durch day spezifizierten Tag umfasst.
68: */
69: public static KalenderEintragGenerell createWholeDay(final LocalDate day, final KalenderEintragTyp typ) {
70: Objects.requireNonNull(day);
71: Objects.requireNonNull(typ);
72:
73: return new KalenderEintragGenerell(day.atStartOfDay(),
74: day.atTime(Zeitraum.BEFORE_MIDNIGHT_HOUR,
75: Zeitraum.BEFORE_MIDNIGHT_MINUTE,
76: Zeitraum.BEFORE_MIDNIGHT_SECOND), typ);
77: }
78:
79:
80: }